package com.xiaobao.controller;


import com.xiaobao.pojo.KaoyanInfo;
import com.xiaobao.pojo.Result;
import com.xiaobao.service.KaoyanInfoService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;


//考研信息
@RestController
public class KaoyanInfoController {
    private static final Logger log = LoggerFactory.getLogger(KaoyanInfoController.class);
    private final KaoyanInfoService kaoyanInfoService;

    public KaoyanInfoController(KaoyanInfoService kaoyanInfoService) {
        this.kaoyanInfoService = kaoyanInfoService;
    }

    // 获取考研信息
    // 该方法通过GET请求接收一个ID参数，并返回相应的考研信息
    @GetMapping("/kaoyanInfo/{id}")
    public Result<KaoyanInfo> kaoyanInfo(@PathVariable String id) {
        // 调用服务层方法获取特定ID的考研信息，并将结果封装到Result对象中返回
        return new Result<>(kaoyanInfoService.getKaoyanInfo(id));
    }

    // 修改考研信息
    @PostMapping("/updateKaoyanInfo")
    public Result<KaoyanInfo> updateKaoyanInfo(@RequestBody KaoyanInfo kaoyanInfo) {
        // 记录修改考研信息的日志
        log.info("修改考研信息");
        // 打印传入的考研信息详情
        log.info(kaoyanInfo.toString());
        // 调用服务层方法更新考研信息
        if (kaoyanInfoService.updateKaoyanInfo(kaoyanInfo)) {
            // 如果更新成功，返回包含更新后考研信息的结果对象
            return new Result<>(kaoyanInfo);
        }
        // 如果更新失败，返回包含错误信息和更新前考研信息的结果对象
        return new Result<>(false, 400, "修改失败", kaoyanInfo);
    }

    //添加考研基础
    //添加考研信息

    // 删除考研信息
    // 该接口用于处理删除特定考研信息的请求
    // 使用HTTP的POST方法，路径中包含"/deleteKaoyanInfo/{id}"
    // 其中{id}是待删除的考研信息的唯一标识符
    @PostMapping("/deleteKaoyanInfo/{id}")
    public Result<KaoyanInfo> deleteKaoyanInfo(@PathVariable String id) {
        // 调用服务层的deleteKaoyanInfo方法尝试删除考研信息
        if (kaoyanInfoService.deleteKaoyanInfo(id)) {
            // 如果删除成功，返回一个包含成功信息的Result对象
            return new Result<>(true, 200, "删除成功", null);
        }
        // 如果删除失败，返回一个包含错误信息的Result对象
        return new Result<>(false, 400, "删除失败", null);
    }
}
